package cn.hcbycloud.common.jwt.service.jwt;


import cn.hcbycloud.common.jwt.service.encryptionkey.BaseGenerateJwtKeyService;
import cn.hcbycloud.common.jwt.vo.JwtToken;
import cn.hcbycloud.common.jwt.vo.LoginInfo;

/**
 * @author gaoh
 * @desc JWT相关服务接口
 * @date 2022年01月12日 下午 10:45
 */
public interface JwtService {

    /**
     * 生成JWTToken ->可设置过期时间
     * @param loginInfo
     * @param generateJwtKeyService
     * @param jwtFactory
     * @return
     */
    JwtToken generateToken(LoginInfo loginInfo,
                           BaseGenerateJwtKeyService generateJwtKeyService,
                           JwtBuilderFactory jwtFactory);

    /**
     * 校验Token并返回token中保存的用户信息
     * @param tokenStr
     * @param generateJwtKeyService
     * @return
     */
    LoginInfo getLoginInfoToken(String tokenStr, BaseGenerateJwtKeyService generateJwtKeyService);

    /**
     * 校验令牌
     * @param tokenStr
     * @param generateJwtKeyService
     */
    void verifierToken(String tokenStr, BaseGenerateJwtKeyService generateJwtKeyService);

}